{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Ring analysis\n",
    "\n",
    "A common topological measure of amorphous systems is a statistics of shortest-path (SP) rings. `matscipy` has a C-implementation of a backtracking algorithms that computes sp-rings according to the algorithm by [Franzblau](https://doi.org/10.1103/PhysRevB.44.4925). The function `ring_statistics` accept a cutoff for neighbor search and a maximum ring length as arguments."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of rings')"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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eQFfQZEB2tisWbNksVi0cOHCRsdXrlwpi8ViUipzzZs3T1FRUcrPz290Q1ZPeGNBc7HZbDp+/Hir3O9n+vTp2r9/f4ufF/AVFBnABBEREXrmmWd06tQps6O0mJqammb/7MGDBzVq1Ch16tRJCQkJLZjKOwQHBys1NVUhIS17e7va2lq1a9dOycnJLXpewJdQZAATTJw4UampqVqwYMFF3/PUU099a5hl0aJF6ty5s/v5rFmzNG3aNP32t79VSkqK4uLiNH/+fNXV1enRRx9VfHy80tPTtWTJkm+df9++fbr22msVERGh/v37Kycnp9Hru3fv1uTJkxUdHa2UlBT9v//3/1RaWup+fezYsXrggQc0Z84cJSYmatKkSRf8ezidTs2fP1/p6ekKDw9332TVxWKxaPv27Zo/f74sFoueeuqpC55n1apVGjVqlOLi4pSQkKCbb75ZBw8edL/epUsXSdLVV18ti8XivhHm5T7fdSXn73//u6677jq1a9dOw4YN0/79+5Wbm6uhQ4cqOjpakydPVklJifvn1q1bp+HDhysqKkpxcXEaOXKkvvzyywtm/+bVonXr1slisWjNmjUaOnSoIiMjde211yo/P/+CP3/+Od58802NGTNGERER+tvf/vatoSXX/27++te/qnPnzrJarZoxY4YqKirc76moqNDtt9+uqKgodejQQS+++KLGjh2rOXPmXPTzAW9FkQFMEBwcrN/+9rf6/e9/r6NHj17RudauXatjx45p/fr1euGFFzRv3jzdfPPNat++vbZs2aL77rtPP/7xj7/1OY8++qgeeeQR7dixQ5mZmZoyZYrKysokSadPn9b48eN19dVXa9u2bVq1apWKi4v1gx/8oNE5Xn/9dYWFhWnjxo364x//eMF8L730kp5//nn97ne/086dOzVp0iR997vf1YEDByRJx48fV79+/fTII4/o+PHj+tnPfnbB81RVVWnu3Lnatm2b1qxZo6CgIH3ve9+T0+mUJG3dulWS9PHHH+v48eN65513mvT5LvPmzdMTTzyhTz/9VCEhIfrhD3+oxx57TC+99JI++eQTFRQU6Mknn5Qk1dXVadq0aRozZox27typTZs26d577/V4aPCXv/ylnn/+eW3btk0hISG66667Lvszjz/+uB566CHt3bv3ouXx4MGDWrlypT744AN98MEHysnJaTSUOXfuXG3cuFHvvfeePvroI33yySf69NNPPcoOeA0DQJuaOXOmMXXqVMMwDOOaa64x7rrrLsMwDGPFihXG+f9Kzps3zxg4cGCjn33xxReNTp06NTpXp06djPr6evexXr16Gdddd537eV1dnREVFWW88cYbhmEYxuHDhw1JxsKFC93vqa2tNdLT041nnnnGMAzD+M///E/jhhtuaPTZhYWFhiQjPz/fMAzDGDNmjHH11Vdf9u+blpZm/OY3v2l0bNiwYcZPfvIT9/OBAwca8+bNu+y5zldSUmJIMnbt2tXo77Vjxw6PPt/1c//93//tfv2NN94wJBlr1qxxH1uwYIHRq1cvwzAMo6yszJBkrFu3rklZv5ktOzvbkGR8/PHH7vf885//NCQZZ8+eveQ5Fi1a1Oj4kiVLDKvV6n4+b948IzIy0rDb7e5jjz76qDFixAjDMAzDbrcboaGhxltvveV+/fTp00ZkZKTx0EMPNenvA3gTrsgAJnrmmWf0+uuva+/evc0+R79+/RQU9PW/yikpKRowYID7eXBwsBISEnTixIlGP5eZmen+c0hIiIYOHerO8dlnnyk7O1vR0dHuR+/evSWp0XDOkCFDLpnNbrfr2LFjGjlyZKPjI0eO9PjvfODAAd12223q2rWrYmNj3UNsR44caZHPz8jIcP85JSVFkhp9jykpKe7vMD4+XrNmzdKkSZM0ZcoUvfTSSzp+/LhHf59vfmaHDh0k6Vv/nL5p6NChlz1v586dFRMT0+jcrvMeOnRItbW1Gj58uPt1q9WqXr16eZQd8BYUGcBEo0eP1qRJk5SVlfWt14KCgmQYRqNjtbW133pfaGhoo+cWi+WCx1xDME1RWVmpKVOmKC8vr9HjwIEDGj16tPt9UVFRTT7nlZoyZYpOnjypP//5z9qyZYu2bNki6comGZ/v/O/MNUT0zWPnf4dLlizRpk2bdO211+rNN99Uz549tXnz5iv+zMv9c2rKd36l//wBX0KRAUy2cOFCvf/++9q0aVOj40lJSSoqKmpUZlpyafH5v3Tr6uq0fft29enTR5I0ePBg7dmzR507d1b37t0bPTwpL7GxsUpLS9PGjRsbHd+4caP69u3b5POUlZUpPz9fTzzxhCZMmKA+ffp8a8VXWFiYJKm+vr7FP/9irr76amVlZenf//63+vfvr2XLll3xOVtb165dFRoaqtzcXPex8vJylnDDZ7XsWkAAHhswYIBuv/12vfzyy42Ojx07ViUlJXr22Wf1/e9/X6tWrdKHH36o2NjYFvncV155RT169FCfPn304osv6tSpU+7JprNnz9af//xn3XbbbXrssccUHx+vgoICLV++XP/93/+t4ODgJn/Oo48+qnnz5qlbt24aNGiQlixZory8PP3tb39r8jnat2+vhIQE/dd//Zc6dOigI0eO6PHHH2/0nuTkZLVr106rVq1Senq6IiIiZLVaW+Tzv+nw4cP6r//6L333u99VWlqa8vPzdeDAAd1xxx3NPmdbiYmJ0cyZM92r2pKTkzVv3jwFBQUF7D5G8G1ckQG8wPz587916b9Pnz569dVX9corr2jgwIHaunXrRVf0NMfChQu1cOFCDRw4UBs2bNB7772nxMRESXJfxaivr9cNN9ygAQMGaM6cOYqLi2s0H6cpfvrTn2ru3Ll65JFHNGDAAK1atUrvvfeeevTo0eRzBAUFafny5dq+fbv69++vhx9+WM8991yj94SEhOjll1/Wn/70J6WlpWnq1Kkt9vnfFBkZqX379unWW29Vz549de+992r27Nn68Y9/3OxztqUXXnhBmZmZuvnmmzVx4kSNHDlSffr0UUREhNnRAI9ZjG8OwgMAAkpVVZWuuuoqPf/887r77rvNjgN4hKElAAgwO3bs0L59+zR8+HCVl5dr/vz5kuS+igX4EooMAASg3/3ud8rPz1dYWJiGDBmiTz75xD20CPgShpYAAIDPYrIvAADwWRQZAADgsygyAADAZ1FkAACAz6LIAAAAn0WRAQAAPosiAwAAfBZFBgAA+Kz/H3HL/BzyS307AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from ase.io import read\n",
    "from matscipy.rings import ring_statistics\n",
    "\n",
    "# Load a disordered configuration (amorphous silicon)\n",
    "a = read('../../tests/aSi.cfg')\n",
    "\n",
    "# Identify rings\n",
    "r = ring_statistics(a, cutoff=3.0, maxlength=6)\n",
    "\n",
    "# Plot statistics\n",
    "plt.plot(r)\n",
    "plt.xlabel('Number of atoms in ring')\n",
    "plt.ylabel('Number of rings')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
